﻿var reg = function(page,uid){	
	this.box = $("#reg_box");	//表单
	this.input = this.box.find("span.at_text>input");
	this.u = $("#u_name");		//用户名
	this.uCheck = false;
	this.p = $("#u_pas");		//密码
	this.pCheck = false;
	this.p1 = $("#u_pas1");		//确认密码
	this.p1Check = false;
	this.p2 = $("#o_pas");		//当前密码
	this.p2Check = false;
	this.e = $("#e_name");		//邮箱
	this.eCheck = false;	
	this.m = $("#mobile");		//手机
	this.mCheck = false;	
	this.ca = $("#catcha");   //验证码
	this.codecheck = false;
	this.btn = $("#reg_sub");	//提交按钮	
	
	this.q = $("#strong");		//密码强度
	this.uid = uid||null;		//重设密码时返回的用户名
	var me = this;  //page  1快速 2邮箱 3手机 4修改密码 5创建安全密码 6修改安全密码 7重设密码 
	
	//var isloading=false;
	
	//提示信息
	var h_on='<em class="on">';	
	var h_err = '<em class="orr"><u class="at_msg m_3_e"></u>';
	var h_pas = '<u class="at_passking"><s class="at_txt">安全等级：</s><s class="at_bar"><span></span><span></span><span class="at_end"></span></s></u>';
	var name_o = h_on+'<span id="namecount">·4-16个字符，1个汉字为2个字符<br />·不能以数字开头</span></em>';
	var same_pas='·密码不能包含用户名<br />';
	//if(page=1||page=2||page=3) same_pas='';
	var pas_o = h_on+'<u class="at_msg m_3_i"></u>请输入对应用户名的密码<br /><a class="pas_link blue1 ml10" href="#" target="_blank">忘记了密码？</a></em>';
	var pas_o1 = h_on+'·再一次输入您的密码</em>';
	var pas_o2 = h_on+'·请输入您的当前密码</em>';
	var ename_o = h_on+'·请输入您的邮箱地址</em>';
	var mobile_o = h_on+'·请输入您的手机号码,方便我们工作人员及时联系您</em>';
	var nname_o = h_on+'·4-16个字符，包括字母、数字、下划线<br />·支持汉字（1个汉字等于2字符）</em>';
	var pname_o = h_on+'·请输入您的手机号码</em>';		
	var name_e1 = h_err+'长度为4-16字符 (1个汉字等于2字符)</em>';//错误
	var name_e2 = h_err+'用户名第一位不能为数字</em>';
	var name_e3 = h_err+'只能使用字母、数字、下划线、汉字</em>';
	var name_e4 = h_err+'用户名不能超过16个字符</em>';
	var name_e5 = h_err+'用户名已被他人注册，请换个用户名</em>';
	var ename_e = h_err+'邮箱地址格式不正确</em>';
	var mobile_e = h_err+'手机号码格式不正确，请检查</em>';
	var pas_e1_n = '两次输入的密码不一致'; 
	var pas_e1 = h_err+pas_e1_n+'</em>';
	var pas_e2 = h_err+'密码不能为空</em>';
	var pas_e3 = h_err+'密码应为6-16个字符</em>';
	var pas_e4_n = '密码太过简单';
	var pas_e4 = h_err+pas_e4_n+'</em>';
	var pas_e5_n = '密码不能是用户名的一部分';
	var pas_e5 = h_err+pas_e5_n+'</em>';
	var name_g = '<em><u class="at_msg m_3_o"></u></em>';//正确	
	var pas_g = '<em class="g"><u class="at_msg m_3_o"></u>'+h_pas+'</em>';//密码正确
	var name_ld = '<em class="ld"><u class="at_msg at_write"></u>正在检测中……</em>';
	var ename_in = h_err+'很遗憾，该邮箱已被注册！请更换邮箱重试</em>';
	var opas_in_n = '当前密码输入错误！';
	var opas_in = h_err+opas_in_n+'</em>';
	var ca_on=h_on+'·看不清楚可以点击验证码进行刷新</em>';
	var ca_in=h_err+'验证码输入错误</em>';
	
	function txt(t){var a=t.parents(".at_text");return a};	
	this.input.focus(function(){//获得焦点
		txt($(this)).attr("class","at_text t_1_i");		
		txt($(this)).find("em").remove();	
		$(this).parents("dd").css("z-index",999);
	})
	this.input.blur(function(){//失去焦点
		txt($(this)).attr("class","at_text t_1_d");
		txt($(this)).find("em").remove();
		$(this).parents("dd");
	})	
	var inErr = function(a,b){//错误
		var at_text = txt(a);
		at_text.attr("class","at_text t_1_e");
		at_text.find("em").remove();
		at_text.append(b);
		return false;
	}
	
	this.outErr=function(a,b){//错误
	
		var at_text = txt(a);
		at_text.attr("class","at_text t_1_e");
		at_text.find("em").remove();
		at_text.append(b);
		return false;
	}

	
	var inOk = function(a){//正确
		var at_text = txt(a);
		at_text.attr("class","at_text t_1_o");
		at_text.find("em").remove();
		at_text.append(name_g);		
	}
	
	var namelength = function(a) {
		var name = a.val(),
			length = 0;
		for(var i=0; i<name.length; i++) {
			if(/[\u4e00-\u9fa5]/.test(name.charAt(i))) length+=2;
			else length+=1;
		}
		return length;
	};
	var passmode = function(a) {//计算密码组合种类
		var num = 0;
		if(/[0-9]+/.test(a)) num++
		if(/[a-zA-Z]+/.test(a)) num++
		if(/[^0-9a-zA-Z\s\u4e00-\u9fa5]+/.test(a)) num++
		return num;
	};
	var clearEmpty = function(O) {//禁止输入空格
		O.val(O.val().replace(/\s*/g,""));
	}
	
	

	this.nameCheck = function(i,s){//验证账号		
		var len = namelength(i);		
        if (len < 4 || len > 16) {//4-16字符 (1汉字等于2字符)
            me.uCheck = inErr(i,name_e1);		
			return;
        }
        if (/^\d{1}.+?$/.test(i.val())) {//第一位是否为数字
            me.uCheck = inErr(i,name_e2);
			return;
        }
        if (!/^[\u4e00-\u9fa5\w]*$/.test(i.val())) {//特殊字符
            me.uCheck = inErr(i,name_e3);			
			return;
        }
	}	
	//验证用户输入的验证码
	this.caCheck = function(i,s){
		var len = namelength(i);		
        if (len!=5) {
            me.codeCheck = inErr(i,ca_in);			
			return false;
        }
		$.getJSON("/op/user/register.php?regaction=checkcode&imgcode="+encodeURIComponent(i.val()), function(json){
			if(json.data==0){
			me.codeCheck = inErr(i,ca_in); 
			return false;
			}
		}); 
		txt(i).append(name_g);
		me.codeCheck = true;	
	}
	
	this.pasCheck = function(i,s){//验证密码	
		var password = i.val().replace(/\s*/, "");
		if (password == "") {//不能为空
			me.pCheck=inErr(i,pas_e2);
			return ;
		}
		
		me.pCheck=true;
		inOk(i);
	}	
	this.pasCheckQ = function(i){//密码强度
		clearEmpty(i);	
		var password = i.val().replace(/\s*/, "");
		var passleng = password.length;
		var _pass = passmode(password);
		var pasking = txt(i).find(".at_passking");
		var king = pasking.find("span");
		king.removeClass("at_current").text('');	
		var pas_link = pasking.next(".pas_link");
		pas_link.show();
		if (passleng < 8) {//弱
			king.eq(0).addClass("at_current").text('弱');
			me.q.val(0);
			return;
		}	
		if(/(?:(.)\1{3,})/.test(password) && _pass == 1) {
			//任何字符重复3次以上，并密码字符种类只有一种，弱
			king.eq(0).addClass("at_current").text('弱');
			me.q.val(0);			
		} else if(_pass == 2 || (!/(?:(.)\1{3,})/.test(password)&&passleng >=8&&_pass == 1)) {
			//密码种类超过8位存在两种 或 没有3次以上重复超过8位 中
			king.not(king.eq(2)).addClass("at_current");
			king.eq(1).text('中');
			me.q.val(1);			
		} else if(_pass == 3){//不管是否重复字符，密码种类存在三种，长度大于等于8，强
			king.addClass("at_current");
			pas_link.hide();
			king.eq(2).text('强');
			me.q.val(2);
		}
	}
	this.pasCheck1 = function(i,s){//确认密码		
		if(me.p.val()!='') {			
			if(i.val()!=me.p.val()){				
				me.p1Check=inErr(i,pas_e1);
			}else{inOk(i);
				me.p1Check=true;
			}
		}
	}
	
	this.enameCheck = function(i,s){//验证邮箱		
		var e_nameStr = /^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/.test(i.val());		
		if (!e_nameStr) {
			me.eCheck=inErr(i,ename_e);
			return;
		}	
		txt(i).append(name_g);
		me.eCheck=true;
	}
	this.mobileCheck = function(i,s){//验证手机	
		var mobileStr = /^1[3|4|5|8][0-9]\d{8}$/.test(i.val());		
		if (!mobileStr) {
			me.mCheck=inErr(i,mobile_e);
			return;
		}	
		txt(i).append(name_g);
		me.mCheck=true;
	}
	this.btn.click(function(){//按钮提交	
		
		me.regIn();
		return false;
	})

	this.regIn = function(){
		if(me.eCheck==false) {return false;}
		if(me.pCheck==false) {return false;}
		//alert('sdf');
		
		this.btn.text("登录中...");
		$("#reg_sub").attr("disabled",true);
		this.box.submit();
		//return true;
	}
	this.u.focus(function(){
		txt(me.u).append(name_o);
		me.u.isCheck=false;
	})
	this.u.blur(function(){me.nameCheck(me.u)});
	this.u.keyup(function(){
	    var pattern=/^\d/;
	    var length=namelength(me.u);
	    if(pattern.test(me.u.val())){
	        me.uCheck=inErr(me.u,name_e2);
	    }else if(length>16){
            me.uCheck=inErr(me.u,name_e4);
	    }else if(length==0){
	        me.u.focus();
	    }else{
		    txt(me.u).attr("class","at_text t_1_i").find("em").attr("class","on").html(name_o);
	        $("#namecount").html("已输入<b>"+length+"</b>个字符，还可以输入<b>"+(16-length)+"</b>个字符");
	    }
	});
	
	this.p.focus(function(){
		me.pCheck=false;
		txt(me.p).append(pas_o);
		var links = txt(me.p).find(".pas_link");		
		links.hover(function(){							 
			me.p.unbind("blur")			
		},function(){
			me.p.bind("blur",function(){
				me.p.next("em").remove();
				me.p.parents("dd").css({position:"static"});
				me.pasCheck(me.p);
			})	
		})
		links.bind("click",function(){
			$(this).mouseout();
			me.p.blur();			
		})	
		if(me.p.val()!='') me.pasCheckQ(me.p);
		me.p.keyup(function(){ 
			me.pasCheckQ(me.p);
		})		
	})
	this.p.blur(function(){me.pasCheck(me.p)})	
	
	this.p1.focus(function(){
		txt(me.p1).append(pas_o1);
		me.p1Check=false;
	})
	this.p1.blur(function(){me.pasCheck1(me.p1)})

	this.p2.focus(function(){
		txt(me.p2).append(pas_o2);
		me.p2Check=false;
	})
	this.p2.blur(function(){me.opasCheck(me.p2)})
	
	this.e.focus(function(){
		txt(me.e).append(ename_o);
		me.eCheck=false;
	})
	
	this.e.blur(function(){
		me.enameCheck(me.e);
	})
	this.m.focus(function(){
		txt(me.m).append(mobile_o);
		me.mCheck=false;
	})
	
	this.m.blur(function(){
		me.mobileCheck(me.m);
	})
	this.ca.focus(function(){
		txt(me.ca).append(ca_on);
		me.cacheck=false;
	})
	this.ca.blur(function(){
		me.caCheck(me.ca);
	}) 
	//延时200毫秒才触发验证
	//this.ca.blur(function(){setTimeout(function(){ me.caCheck(me.ca)},200)})	
	
	this.input.eq(0).focus();
}

//完整弹窗代码
/* at_infoTrace.show(json.msg,json.state==-1?'e':"o",null,[at_traces_i.getButton("确定","yellow",function(){
						if(json.backurl) window.location.href = json.backurl; 
						else if(window.CHANGEURI==undefined){
							window.location.href="http://u.zhubajie.com/safe/index.html";
						}else{
							if(json.redirect == 1){							
								window.location.href="http://u.zhubajie.com/login/dologout";
							}else{								
								if(page == 4 || page == 6 ){
									at_infoTrace.hide();
								}else{
									window.location.href="http://u.zhubajie.com/login/dologout";
								}	
							}						
						}
					})]); */